package com.kcloud.commons.authorization.annotation;

import java.lang.annotation.*;

/**
 * 权限设置
 *
 * @author songhuiqing
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Authorization {

    /**
     * 权限对象标识,默认为对象名称全拼，忽略大小写。例如用户对象，这里应用是user，与业务域标识一致
     * @return
     */
    String value() default "";

    /**
     * 子对象，例如用户学历对象是用户的子对象，该子对象也需要在权限体系中控制，需要设置该属性 <br>
     * 1. child = true, 必须设置parent属性 <br>
     * 2. child = true, type只对BIZ_CTRL生效
     * @return
     */
    boolean child() default false;

    /**
     * 父对象权限标识
     * @return
     */
    String parent() default "";

    /**
     * 权限控制类型，默认全部权限控制（业务控制、数据管理范围控制、数据使用范围控制）
     *
     * @return
     */
    AuthorizationType[] type() default {AuthorizationType.BIZ_CTRL, AuthorizationType.DATA_CTRL, AuthorizationType.DATA_APPLY};
}
